<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">

<link rel="stylesheet" type="text/css" media="screen" href="css/redmond/jquery-ui-1.10.3.custom.min.css" />	<!-- jqueryUI CSS -->
<link rel="stylesheet" type="text/css" media="screen" href="css/selfTemplate.css" />						<!-- 本專案自行定義 CSS -->
<script src="js/jquery-1.10.2.min.js"></script>		<!-- jQuery 核心 -->
<script src="js/jquery-ui-1.10.3.custom.js" type="text/javascript"></script>								<!-- jqueryUI 核心 -->
<script src="js/jquery.cookie.js"></script>																	<!-- 操作cookie用 -->
<script src="js/widgets.js" type="text/javascript"></script>												<!-- 本專案自行定義 JS -->

<title>部署</title>

<script type="text/javascript">

var tmp ="";
var fl = [];
var distinSqs = "";	//記錄不同的Squad組合，之後與環境結合以找出主機
var defHeight=180;
var defWidth=300;
var chgWidth=590;
var chgHeight=400;

/*	
 2013/06/05	14:53
 組合出不同的資源群組字串
 */
function genDiffSquad() {
	distinSqs ="";
	$("input:checkbox:checked").each( function(){	//處理每個有勾的項目
		tmp = $(this).attr("className");
		$("td."+tmp).each( function() {	//每個項目下，可能會去多個 資源群組
			if ( distinSqs=="" ) {
				distinSqs = $(this).attr("subsysId") +splitTokenONE +$(this).attr("squadId");
			} else if ( distinSqs.indexOf( splitTokenFOUR ) != -1 ) {	//有很多筆，要一個個比較
				var isNotDuplicated = true;
				n = distinSqs.split( splitTokenFOUR );
				for( i=0;i<n.length; i++ ) {
					if (n[i].split( splitTokenONE )[1] == $(this).attr("squadId") ) {
						isNotDuplicated = false;
						break;
					}
				}
				if ( isNotDuplicated ) {
					distinSqs += splitTokenFOUR + $(this).attr("subsysId") +splitTokenONE +$(this).attr("squadId");
				}
			} else {		//表示只有一筆
				if ( distinSqs != $(this).attr("subsysId") +splitTokenONE +$(this).attr("squadId")  ) {
					distinSqs += splitTokenFOUR + $(this).attr("subsysId") +splitTokenONE +$(this).attr("squadId");
				}
			}
		});
	});
}

/**	檢驗是否有更新的部署記錄	*/
function validateHistory(tmp) {
	isPassed = true; //是否存在更新的檔案，true值表示，先假定沒有
	$.post("ValidateHistory", tmp, function( reses2 ) {
		if ( $("#depConForRemove").size() ==0 ) {
			$("#depConfirm").append("<p><p><div id='depConForRemove'></div>");
		}
		if ( $("#depConForRemove #cons").size() ==0 ) {
			$("#depConForRemove").append("<table><tr><td id='cons'></td></tr></table>");
		}
		$("#depConForRemove #cons").html("");
		$.each(reses2,function(i, res) {
			if ( res.fileResult == "FAIL" ) {	//表示此檔案，這在次部署的主機群中，有一台以上的主機，其版本更新
				isPassed = false;
				fileName = res.fileName;
				fileName = fileName.replace( new RegExp ( splitTokenONE , "gm" ), ".");
			
				if ( !$("#tabs").length>0 ) {
					tmp = "<p class='alert'>部署的主機路徑上，已存在更新版本的檔案!<br>確定要執行部署？</p>下列各分頁顯示詳細資訊<p><div id=\"tabs\"><ul id='one'></ul></div>";
					$("#depConForRemove #cons").append(tmp);
				}
				tmp = "<li><a href=\"#tabs-"+res.filePath+"-"+res.fileName+"\">"+fileName+"<br>( "+res.fileVer+" ) "+res.filePath+"</a></li>";
				$("#depConForRemove #cons div#tabs ul#one").append(tmp); 
				tmp = "<div id='tabs-"+res.filePath+"-"+res.fileName+"'><ul id='a'></ul></div>";
				$("#depConForRemove #cons #tabs").append(tmp);
				
				$.each(res.vhses, function(i, resA) {
					if ( resA.squadResult == "FAIL" ) {
						$("div#tabs-"+res.filePath+"-"+res.fileName+" ul#a").append("<li>"+resA.squadName+" ("+resA.squadId+")<ul id='"+resA.squadId+"'></ul></li>");
						$.each(resA.laos,function(i, res2) {
							if ( res2.e != undefined) {
								if (type == "Single") {
									tmp = "<li>"+res2.s1+" ("+res2.s2+")<br>"+res2.c+"，於"+res2.d+"部署"+res2.e+"版</li>";
									$("#depConForRemove #cons ul#ulc ul#ul"+resA.squadId).append(tmp);	
								} else {
									if ( $("div#tabs-"+res.filePath+"-"+res.fileName+" ul#a ul#"+resA.squadId).length > 0 ) {
										tmp = "<li>"+res2.s1+" ("+res2.s2+")<br>"+res2.c+"，於"+res2.d+"部署"+res2.e+"版</li>";
										$("div#tabs-"+res.filePath+"-"+res.fileName+" ul#a ul#"+resA.squadId).append(tmp);	
									} else {
										console.log("寫入標的不在, deplmainSN："+res.deplmainSN+" depldetailid："+res.depldetailid);
									}
								}
							}
						});	
					}
				});
			}
		});
		$("#tabs").tabs();	//在所有Tab都新增完成後，才能呼叫這部來生成tab
	},"JSON");
	return isPassed;
}


function chkReady() {
	tmp = true;	//是否通過
	$("#fileReqMapping tr").each(function(i,strSquad1) {
		if( i > 0) {
			$("#fileReqMapping tr:nth-child("+(i+1)+") td:nth-child(8) ul").each(function(j,strSquad2) {
				strSquad2 = strSquad2.innerHTML;
				if (strSquad2.indexOf("li") == -1 && strSquad2.indexOf("LI") == -1) {
					tmp = false;	//存在檔案沒選擇部署群組
				}
			});		
		}
	});
	
	if ( $("input[type='radio']:checked.env").size()==0 ){ tmp=false; }	//部署環境沒有選擇
	if ( $.trim( $("#selComment").val() )=="" ) { tmp=false; }			//手動部署的原因沒有輸入
	if ( $("#fileReqMapping tr").size() == 1 )  { tmp=false; }			//沒有選擇部署檔案
	
	$("button#butDiv").prop("disabled",!tmp);	//按鈕可否按下，與是否通過的結果相同
}

/**
	在交付式部署時
 	點選欲部署的環境
	
 	此時檢查下列項目，通過，才能進行部署
 
 
 */
function selEnv(obj) {
	/** 交付式部署 
		此處僅交付式部署可用，因為手動式部署在這個時間點，還不一定有資源群組
	*/
	if ( $("input:radio[name='radioDepBy']:checked").val()=="divDepByDel" ) {	//交付式部署	
		$("button#butDiv").prop("disabled",false);
		$("ul").parent("td").removeClass("alert");
		
		//勾選至少一筆部署項目！
		if ( $("#queryResHook input:checkbox:checked").size() >0 ) {
			genDiffSquad();
			
			/*	取得主機列表 */
			$.post("QueryAvailableHost",{distinSqs:distinSqs,envId:$(obj).val()},function(reses) {
				$.each(reses, function(i, res) {
					var tmp = "";
					
					// hts 的值僅會給 nonWeb的部署
					// web的部署要
					$.each(res.hts, function(j, ht) {
						tmp += ("<li>"+ht.id+"("+ht.name+")</li>");
					});
					if ( tmp=="" ) {
						$("ul."+res.subsysid+"."+res.squadid+".nonWeb[isChk='1']").parent("td").addClass("alert");
						$("button#butDiv").prop("disabled",true);
					}
					
					$("ul."+res.subsysid+"."+res.squadid+".nonWeb[isChk='1']").html(tmp);
					$("ul."+res.subsysid+"."+res.squadid+".nonWeb[isChk='0']").html("").parent("td").removeClass("alert");
					
					if ( $(".web").size() > 0 ) {
						if ( res.webConsole == "" ) {
							$("ul."+res.subsysid+"."+res.squadid+".web li").remove();
							$("ul."+res.subsysid+"."+res.squadid+".web[isChk='1']").parent("td").addClass("alert");
							$("button#butDiv").prop("disabled",true);
						} else {
							$("ul."+res.subsysid+"."+res.squadid+".web[isChk='1']").html("<li>Console:::"+res.webConsole+"</li>");
							$("ul."+res.subsysid+"."+res.squadid+".web[isChk='0'] li").remove();
						}
					}
				});
			},"JSON");
		} else {
			alert("需勾選至少一筆部署項目! ");
		}
	} else {	//手動式部署
		//檢查是否必要的資料都有了，若有了，則可以將部署鈕給 enable
		chkReady();
	}
}

/**
 *		type=1	交付式部署
 *		type=2	手動式部署
 */
function dep(type) {
	/*	1. 檢查每個組合都起碼有一台以上的主機	*/
	$("#depConForRemove table").remove();
	subSysId = $("#q_form #subSysId").val();
	envId = $("table.removable input[type='radio']:checked").val();
	envName = $("table.removable input[type='radio']:checked").attr("envName");
	v_tar = $("#deplmainSN").val();
	if ( type =='2' ) {	//手動式部署
		envId = $("tr#envSelect td input[type='radio']:checked").val();
		subSysId = $("selectselect#subsysId option:checked").val();	
		fl = [];
		$("#fileReqMapping tr").each(function(j,detail){
			// **檔案 >> 資源群組
			var fileName = "";
			var ver;
			var depPath="";
			var depType = "";
			var svnPath="";
			if ( (j+1) < $("#fileReqMapping tr").size() ) {
				
				fileName = $("#fileReqMapping tbody tr:nth-child("+(j+2)+") td:first").next().next().html();
				ver = $("#fileReqMapping tbody tr:nth-child("+(j+2)+") td:nth-child("+4+") select option:selected").html();
				depType = $("#fileReqMapping tbody tr:nth-child("+(j+2)+") td:nth-child("+5+") select option:selected").html();
				svnPath = $("#fileReqMapping tbody tr:nth-child("+(j+2)+") td:nth-child("+6+")").html();
				depPath =$("#fileReqMapping tbody tr:nth-child("+(j+2)+") td:nth-child("+7+") input").val();
				
				//找不到non, 表示為web
				if ( depType.indexOf("non") ==-1 ) {
					$("#isContainedWeb").val( true );
					maniFilePortfolio("web");
				} else {
					maniFilePortfolio("non-web"); 
				}
				
				sq = [];
				var str = "";
				var subsysid = "";
				sqid = "";
				$("#fileReqMapping tbody tr:nth-child("+(j+2)+") td:last").children("ul").children("li").each(function(r,level3){
					// 檔案 >> **資源群組
					str = level3.innerHTML;
					sqid = str.split("-")[1].substring(str.split("-")[1].indexOf('(')+1,str.split("-")[1].length-1);
					sqname = str.split("-")[1].substring(0,str.split("-")[1].indexOf(' ('));
					sqpath =  $(level3).attr("sp");
					sq.push({sqid:sqid,sqname:sqname,sqpath:sqpath});
				});
				
				fl.push({fileName:fileName,ver:ver,depType:depType,depPath:depPath,svnPath:svnPath,sq:sq});	
			}
		});
		v_tar = JSON.stringify(fl);
		$("#fileList").val(v_tar);
	} else {		//交付式部署
		
		distinSqs = "";
		//要列出沒有打勾的項目，供後端反向排除
		$("input.scb:not(':checked')").each( function() {
			distinSqs += splitTokenONE+ $(this).attr("depldetailid");
		});
		distinSqs = distinSqs.substring(4);	//前四個字是PPPP
	}
	
	windowFreeze("驗證主機是否存取正常...");
	if (type == '1') {					//交付式部署, v_tar是 "部署計畫代碼"
		tmp= {subSysId:subSysId,envId:envId,envName:envName,v_tar:v_tar,unChkList:distinSqs,type:"Batch",filePortfolio:$("#filePortfolio").val()};	
	} else if (type == '2') {		//手動式部署, v_tar是 要部署的檔案資料陣列
		tmp= {subSysId:subSysId,envId:envId,v_tar:v_tar,type:"Manual",filePortfolio:$("#filePortfolio").val() };
	}
	
	
	/**	檢驗是否主機的登入是否正常 (都有設定主機，而且上面登記的帳號都可以執行)	*/
	$.post("ValidateHost",tmp, function( res ) {
		$("#depConForRemove").append("<table><tr><td id='cons'></td></tr></table>");
		windowUnfreeze();
		if ( res["web"].isOK && res["nonWeb"].res == "1111" ) {
			chgWidth = defWidth;
			chgHeight = defHeight; 
			
			if ( $("input:radio[name='radioDepBy']:checked").val()=="divDepBySelf" ) {	//手動式部署
				tmp = { type:"Manual",subSysId:subSysId,envId:envId,tar:v_tar,filePortfolio:$("#filePortfolio").val() };
			} else {
				tmp = { type:"Batch",subSysId:subSysId,envId:envId,deplmainSN:v_tar,filePortfolio:$("#filePortfolio").val() };
			}
			
			isPassed = validateHistory(tmp);
			
			if ( !isPassed ) {
				chgWidth=550;
				chgHeight=600;
			} else {
				tmp = "確認主機設定正常，且無更新的檔案被部署";
				$("#depConfirm").html( tmp );
			}
		} else {
			chgWidth=0;
			chgHeight=0;
			
			if ( !res["web"].isOK ) {
				tmp = res["web"].mes;
				$("#cons").append(envName+"的設定：<br>"+tmp);
				chgHeight+=200;
				chgWidth=200;
			}
			
			//[沒綁定主機][主機無法登入][部署路徑不存在][部署路徑無法存取]<br>
			
			var result = res["nonWeb"].res;
			if ( result.charAt(0) == "0" ) {
				tmp = "下列資源群組並未設定對應主機<ul id='ula'></ul>";
				$("#cons").append(tmp);
				$.each( res["nonWeb"].squadsWithNoHost,function(i, res) {
					tmp = ("<li>"+res.b+" ("+res.a+" )</li>");
					$("#cons ul#ula").append(tmp);
				});
				chgHeight+=200
				chgWidth=400;
			}
			if ( result.charAt(1) == "0" ) {
				tmp = "下列資源群組的主機無法登入<ul id='ulb'></ul>";
				$("#cons").append(tmp);
				$.each( res["nonWeb"].v2 ,function( i, res2 ) {
					tmp = ("<li><ul id='"+res2.res+"'>"+res2.squadName+" ("+res2.res+" )</ul></li>");
					$("#cons ul#ulb").append(tmp);
					$.each(res2.hostCantLogin, function(j, res3) {
						tmp = ("<li>"+res3.a+" ( "+res3.b+" ) -"+res3.c+"</li>");
						$("#cons ul#ulb ul#"+res2.res).append(tmp);
					});
				});
				chgHeight+=200;
				chgWidth=400;
			}
			if ( result.charAt(2) == "0" ) {
				tmp = "下列資源群組存在不存在的部署絡徑<ul id='ulc'></ul>";
				$("#cons").append(tmp);
				$.each( res["nonWeb"].v2 ,function( i, res2 ) {
					tmp = ("<li><ul id='"+res2.res+"'>"+res2.squadName+" ("+res2.res+" )</ul></li>");
					$("#cons ul#ulc").append(tmp);
					$.each(res2.pathNotExist, function(j, res3) {
						tmp = ("<li>"+res3.a+" ( "+res3.b+" ) -"+res3.c+"</li>");
						$("#cons ul#ulc ul#"+res2.res).append(tmp);
					});
				});
				chgHeight+=200;
				chgWidth=400;
			}
			if ( result.charAt(3) == "0" ) {
				tmp = "下列資源群組存在的部署絡徑無法存取<ul id='uld'></ul>";
				$("#cons").append(tmp);
				$.each( res["nonWeb"].v2 ,function( i, res2 ) {
					tmp = ("<li><ul id='"+res2.res+"'>"+res2.squadName+" ("+res2.res+" )</ul></li>");
					$("#cons ul#uld").append(tmp);
					$.each(res2.pathCantAccess, function(j, res3) {
						tmp = ("<li>"+res3.a+" ( "+res3.b+" ) -"+res3.c+"</li>");
						$("#cons ul#uld ul#"+res2.res).append(tmp);
					});
				});
				chgHeight+=200;
				chgWidth=400;
			}
		}
		
		tmp = {width:chgWidth, height:chgHeight/*高度*/, resizable:false/*對話框大小可調整*/, modal:true/*別的dialog都不能按*/, show:"slide"/*進場特效*/, hide:"slide"/*出場特效*/};	//dialog的顯示參數
		$("#depConfirm").css("visibility", "visible").dialog({
			buttons : {
				"部署" : function() {
					windowFreeze("部署中...");
					$("#envId").val( $("input[type='radio']:checked.env").val() ) ;
					$("#comment").val( $("#selComment").val() ) ;
					$("#q_form #unChkList").val(distinSqs);
					if ( type == 1 ) {		/*	交付式部署	*/
						$("#isByDel").val(true);
						$("#q_form #subSysId").val( subSysId );
						$.post("BeforeDep", $("#q_form").serializeArray(),function(res) {
							alert(res);
						});
					} else {		/*	手動式部署	*/
						$("#isByDel").val(false);
						$("#q_form #subSysId").val( subSysId );
						$.post("DepBySelf", $("#q_form").serializeArray(),function(res) {
							alert(res);
						});
					}
					windowUnfreeze();
					$("button#butDiv").html("執行結束").prop("disabled",true);
					$(this).dialog("close"); 
				},	"關閉" : function() { $(this).dialog("close"); }
			}
		}).dialog("option", tmp );	// end of dialog
		
		if ( chgWidth != defWidth ) {	//表示驗證主機沒有通過，我們要將確定按鈕給Disable
			tmp = $(".ui-dialog-buttonpane button:contains('部署')");
		    $(tmp).button("disable");
		}
	},"JSON");
}

function next(sn,subSysId,deliverySN,deplmainSN){
	$("#q_form #subSysId").val( subSysId );
	
	$.post("Val",{valType:1,deplmainSN:deplmainSN},function(res) {
		tmp = jQuery.parseJSON(res);
		if ( !Boolean(tmp.isOK) ) {
			alert(tmp.mes);
		} else {
			$("#removeQueryRes").remove();
			$("#statusSN").val(sn);
			$("#deliverSN_q").val(deliverySN);
			tmp = "<table class='removable'>"+
			"<tr><td><h3>部署環境</h3></td></tr>"+
			"<tr id='envSelect' deplmainSN='"+deplmainSN+"'></tr>"+
			"<tr id='depBut'></tr><tr><td>&nbsp;</td></tr></table><table id='msgH'><thead class='tableFirst'>"+
			"<tr><th class='right'>提交人員：</th><td class='left'></td></tr>"+
			"<tr><th class='right'>連絡電話：</th><td class='left engN'></td></tr>"+
			"<tr><td colspan='2'>&nbsp;</td></tr>"+
			"<tr><td class='left' colspan='2'>說明：</td></tr>"+
			"<tr><td class='left' colspan='2'><textarea id='delComment' readonly='readonly'></textarea></td></tr>"+
			"<tr><td colspan='2'>&nbsp;</td></tr>"+
			"<tr><td colspan='2'>&nbsp;</td></tr>"+
			"</thead></table><p><div id='hookGFS'></div><p><p><div id='hookRDS'></div>";
			$("#removeQueryResHook").append(tmp);
			
			$.post("QueryDeliverAble",$("#q_form").serializeArray(),function(reses) {
				if ( $(reses.rds).size() > 0  ) {	//需求下轄檔案裡有值
					$("table#msgH td:first").html(reses.rds[0].creatorName);
					$("table#msgH tr:nth-child(2) td:first").html(reses.rds[0].creatorPhone);
					$("textarea#delComment").val(reses.rds[0].comment);	
				} else {
					$("table#msgH td:first").html(reses.gfs[0].creatorName);
					$("table#msgH tr:nth-child(2) td:first").html(reses.gfs[0].creatorPhone);
					$("textarea#delComment").val(reses.gfs[0].comment);
				}
				
				distinSqs = "";
				$.each(reses.sqs,function(m, res) {
					distinSqs += splitTokenFOUR+res.id+splitTokenONE+res.name;
				});
				distinSqs = distinSqs.substring(4);	//前四個字是PPPP
				
				var preReqSN =0;		
				var fileNum=0;
				var reqNum = 1;
				var tmp3 =1;

				if ( $(reses.rds).size() > 0  ) {	//需求下轄檔案裡有值
					preReqSN =0;		
					fileNum=0;
					reqNum = 1;
					tmp3 =1;
					tmp = "<h3>需求下轄程式</h3><table id='tableRDS'><tr><th>#</th><th>需求編號</th><th></th><th>模組/檔案名稱</th><th>版次</th><th>執行方式</th><th>資源群組</th><th>資源群組<br>部署路徑</th><th>部署檔案<br>延伸路徑</th><th>部署標的</th></tr></table>"; 
					$("#hookRDS").append(tmp);
					
					$.each(reses.rds,function(i, res) {
						isWeb = false;
						if ( res.depType.indexOf("non") ==-1 ) {
							isWeb = true;
							maniFilePortfolio("web");
						} else {
							maniFilePortfolio("non-web");
						}
						$("#isContainedWeb").val(isWeb);
						
						if ( preReqSN != res.reqSN ) {
							if (i!=0) {reqNum++;}
							tmp = "<tr><td class='req"+res.reqSN+" engN center' rowspan='1'>"+reqNum+"</td><td class='req"+res.reqSN+"' rowspan='1'>"+res.reqID+"</td><td  class='center' rowspan='1'><input depldetailid='"+res.depldetailid+"' class='scb' isWeb='"+isWeb+"'  sChk='1' onclick=chkDeplDetail(this) className='chkBox"+i+"' type='checkbox' checked='checked' ></td><td class='file"+i+" engN' rowspan='1'>"+res.localFile+"</td><td class='file"+i+" right'>"+res.localVer+"</td><td class='file"+i+" engN' rowspan='1'>"+res.depType+"</td>";
						} else {	//同一個需求下
							tmp = "<tr class='engN'><td class='center file"+i+"'><input  depldetailid='"+res.depldetailid+"' class='scb' isWeb='"+isWeb+"'  sChk='1' onclick=chkDeplDetail(this) className='chkBox"+i+"' type='checkbox' checked='checked' ></td><td class='file"+i+"'>"+res.localFile+"</td><td class='file"+i+" right' rowspan='1'>"+res.localVer+"</td><td class='file"+i+" engN' rowspan='1'>"+res.depType+"</td>";
						}
						
						$.each(res.sqs,function(j, sq) {
							if (j==0) {	
								tmp += "<td class='engN chkBox"+i+"' subsysId='"+sq.s1+"' squadId='"+sq.s2+"'>"+sq.s1+" ("+sq.s4+") - "+sq.s2+" ("+sq.s5+")</td><td class='engN'>"+sq.s3+"</td><td class='file"+i+"' rowspan='1'>"+res.depPath+"</td><td><ul isChk='1' class='chkBox"+i+" "+sq.s1+" "+sq.s2+(isWeb?" web":" nonWeb")+"'></ul></td></tr>";	
							} else {
								tmp += "</tr><tr><td class='engN chkBox"+i+"' subsysId='"+sq.s1+"' squadId='"+sq.s2+"'>"+sq.s1+" ("+sq.s4+") - "+sq.s2+" ("+sq.s5+")</td><td class='engN'>"+sq.s3+"</td><td><ul isChk='1' class='chkBox"+i+" "+sq.s1+" "+sq.s2+(isWeb?" web":" nonWeb")+"'></ul></td></tr>";
							}
						});
						
						$("#tableRDS").append(tmp);
						
						if ( preReqSN == res.reqSN || i==0 ) { fileNum += res.sqs.length; }
						$(".file"+i).attr("rowspan",res.sqs.length);
						
						if ( preReqSN != res.reqSN ) {
							tmp3 =0;
							if ( i != 0 ) {
								$(".req"+preReqSN).attr("rowspan",fileNum);
								fileNum=0;
							}
						}
						tmp3 += res.sqs.length;
						
						preReqSN = res.reqSN;
					});
					if (tmp3==0){tmp3=1;}
					$(".req"+preReqSN).attr("rowspan",tmp3);
				}
				
				if ( $(reses.gfs).size() > 0  ) {	//共用程式有值
					preReqSN =0;		
					fileNum=0;
					reqNum = 1;
					tmp3 =1;
					tmp = "<h3>共用程式</h3><table id='tableGFS'><thead class='tableFirst'><tr><th>#</th><th>需求編號</th><th></th><th>模組/檔案名稱</th><th>版次</th><th>執行方式</th><th>資源群組</th><th>資源群組<br>部署路徑</th><th>部署檔案<br>延伸路徑</th><th>部署標的</th></tr></thead><tbody id='tbodyGFS'></tbody></table>";
					$("#hookGFS").append(tmp);
					
					$.each(reses.gfs,function(i, res) {
						isWeb = false;
						if ( res.depType.indexOf("non") ==-1 ) {
							isWeb = true;
							maniFilePortfolio("web");
						} else {
							maniFilePortfolio("non-web");
						}
						
						/*	由於先前已計算過需求下轄程式，其可能包含web程式，因此這裡要包含需求下轄程式的判斷，故用 ||	*/						
						$("#isContainedWeb").val( (Boolean(isWeb)|| Boolean( $("#isContainedWeb").val() )) );
						
						rqLists = "<ol type='a'class='engN'>";
						$.each(res.rqs ,function(i, res2) {
							rqLists += ("<li reqid='"+res2.s1+"'>"+res2.s2+"</li>");
						});
						rqLists += "</ol>";
						if (i!=0) {reqNum++;}
						tmp = "<tr><td class='int center comFile"+i+"'>"+reqNum+"</td><td class='comFile"+i+"'>"+rqLists+"</td><td class='center comFile"+i+"'><input  depldetailid='"+res.depldetailid+"' class='scb' isWeb='"+isWeb+"' sChk='1' onclick=chkDeplDetail(this) className='comChkBox"+i+"' type='checkbox' checked='checked' ></td><td class='comFile"+i+" engN'>"+res.localFile+"</td><td class='comFile"+i+" int'>"+res.localVer+"</td><td class='comFile"+i+" engN' rowspan='1'>"+res.depType+"</td>";
						
						$.each(res.sqs,function(j, sq) {
							if (j==0) {	 
								tmp += "<td class='engN comChkBox"+i+"' subsysId='"+sq.s1+"' squadId='"+sq.s2+"''>"+sq.s1+" ("+sq.s4+") - "+sq.s2+" ("+sq.s5+")</td><td class='engN'>"+sq.s3+"</td><td class='comFile"+i+"' rowspan='1'>"+res.depPath+"</td><td><ul isChk='1' class='comChkBox"+i+" "+sq.s1+" "+sq.s2+(isWeb?" web":" nonWeb")+"'></ul></td></tr>";	
							} else {
								tmp += "</tr><tr><td class='engN comChkBox"+i+"' subsysId='"+sq.s1+"' squadId='"+sq.s2+"''>"+sq.s1+" ("+sq.s4+") - "+sq.s2+" ("+sq.s5+")</td><td class='engN'>"+sq.s3+"</td><td><ul isChk='1' class='comChkBox"+i+" "+sq.s1+" "+sq.s2+(isWeb?" web":" nonWeb")+"'></ul></td></tr>";
							}
						});
						$("#tbodyGFS").append(tmp);
						refreshUI(1,"tbodyGFS",false);
						
						$(".comFile"+i).attr("rowspan",res.sqs.length);
					});
				}
			});	
			queryEnv("envSelect");
			$("#deplmainSN").val(deplmainSN);
		}
		
	});
	$("button").button();
}


/*
 	按下部署選項前的 checkbox鍵
 	
 	是否為勾選
 		(是)
 		1. Enable 環境勾選
 		
		判斷環境有無選擇？
			(有選) -->	加入本項的host值
			(沒選) -->	沒事
		(否)
		1. 移除該欄位Host值
		是否存在任何細項被勾選？
			(是) -->	沒事
			(否) -->	移除環境勾選，Disable 環境勾選
 */
function chkDeplDetail(obj) {
	tmp = $(obj).attr("className");
	
	// 是否為勾選
	if ( !Boolean( $(obj).prop("checked") ) ) {	//現在等於1，表示是"取消勾選"
		$(obj).attr("isChk","0");
		$("ul."+ tmp).attr("isChk","0");
		$("ul."+tmp).html("").parent("td").removeClass("alert");	//移除該欄位Host值
		
		//是否存在任何細項被勾選？
		if ( $("input.scb:checked").size() ==0 ) {	//否
			$("input:radio[name='env']").prop('checked', false).prop("disabled",true);
			$("button#butDiv").prop("disabled",true);
		}
	} else {		//勾選
		$(obj).attr("isChk","1");
		$("ul."+ tmp).attr("isChk","1");
		
		$("input:radio[name='env']").prop("disabled",false);
		
		if ( $("input:radio[name='env']:checked").size() >0 ) {
			distinSqs = "";
			$("td."+tmp).each(function(){
				distinSqs += splitTokenFOUR+$(this).attr("subsysId")+splitTokenONE+$(this).attr("squadId");
			});
			distinSqs = distinSqs.substring(4);	//前四個字是PPPP

			$.post("QueryAvailableHost",{distinSqs:distinSqs,envId:$("input:radio[name='env']:checked").val()  },function(reses) {
				$.each(reses, function(i, res) {
					tmp = "";
					$.each(res.hts, function(j, ht) {
						tmp += ("<li>"+ht.id+"("+ht.name+")</li>");
					});
					if ( tmp=="" ) {
						$("ul."+$(obj).attr("className")+"."+res.subsysid+"."+res.squadid+".nonWeb[isChk='1']").parent("td").addClass("alert");
						$("button#butDiv").prop("disabled",true);
					} else {
						$("ul."+$(obj).attr("className")+"."+res.subsysid+"."+res.squadid+".nonWeb[isChk='1']").html(tmp).parent("td").removeClass("alert");
						$("button#butDiv").removeClass("ui-state-disabled").removeAttr("disabled");
						
					}
					if ( $(".web").size() > 0 ) {
						if ( res.webConsole == "" ) {
							$("ul."+$(obj).attr("className")+"."+res.subsysid+"."+res.squadid+".web li").remove();
							$("ul."+$(obj).attr("className")+"."+res.subsysid+"."+res.squadid+".web[isChk='1']").parent("td").addClass("alert");
							$("button#butDiv").prop("disabled",true);
						} else {
							$("ul."+$(obj).attr("className")+"."+res.subsysid+"."+res.squadid+".web[isChk='1']").html("<li>Console:::"+res.webConsole+"</li>").parent("td").removeClass("alert");
						}
					}
				});
			},"JSON");
		}
	}
	
	if ( $("input.scb[isWeb='true']:checked").size() != 0 && $("input.scb[isWeb='false']:checked").size() != 0 ) {
		$("#filePortfolio").val("1");		
		$("#isContainedWeb").val( true );
	} else if ( $("input.scb[isWeb='true']:checked").size() == 0 && $("input.scb[isWeb='false']:checked").size() != 0 ) {
		$("#filePortfolio").val("2");
		$("#isContainedWeb").val( false );
	} else {
		$("#filePortfolio").val("3");
		$("#isContainedWeb").val( true );
	}
}

function queryEnv(tar) {
	tmp2=0;
	type=1;	//預設為1，交付式部署
	if ( $("input:radio[name='radioDepBy']:checked").val()=="divDepBySelf" ) {	//手動式部署
		type=2
		if ($("#divDepBySelf table #"+tar+" td").size()==0){
			tmp2="#divDepBySelf table ";
		}
	} else {
		if ($("table.removable #"+tar+" td").size()==0){
			tmp2="table.removable ";
		}
	}
	if ( tmp2 != 0 ) {
		$("#fc").val("raiseDeplyByDelivery");
		$.post("QueryEnv", $("#a_form").serializeArray(), function(reses) {
			if (reses.length != 0) {
				$.each(reses,function(i, res) {
					tmp = "<td><input class='env "+ $("input:radio[name='radioDepBy']:checked").val() +"' type='radio' name='env' envName='"+res.name+"' value='"+res.id+"' onclick='selEnv(this)' >"+res.name+"</td>";
					$(tmp2+"#"+tar).append(tmp);		
				});
				$(tmp2+"#depBut").append("<td><button id='butDiv' type='button' onclick=\"dep('"+type+"')\" DISABLED>進行部署</button></td>");
				$("#butDiv").button();
			} else {
				alert("尚未設定環境無法部署！");
			}
		});	
	}
}

$(document).ready(function() {
	
	init("depByDelivery.html");
	var t = querySubsys( $.cookie("empId"),$.cookie("pageName"),"subsysId");
	
	if ( t == 1 ) {
		$("#q_form #loginUser").val( $.cookie("empId") );
		$("#a_form #loginUser").val( $.cookie("empId") );
		$("#a_form #isSU").val( $.cookie("isSU") );
		$(".dialog").css("visibility","hidden");
		$("textarea").val("");
		
		$("#delSN").bind("keyup",function(){
			return validateNumber(this,this.value); 
		});
		
		$("#selComment").bind("keyup",function(){
			chkReady(); 
		});	//編輯手動部署原因時，要判斷是否可以部署了
		
		/*	檢查是否要解決對子系統選項 的 鎖定 */
		chkIfLockSubSys();
		
		$("#clickS").bind('click',function(){
			
			$("#removeQueryResHook").remove();
			
			$("#deliverSN_q").val( $("#delSN").val() );
			$("#targetSystemId").val( $("#selectSysNo option:selected").val() );
			
			$.post("QueryDepList",{ targetSystemId: $("#selectSysNo option:selected").val(), deliverSN_q: $("#delSN").val(),empId:$.cookie("empId"), isSU:$.cookie("isSU") }, function(reses) {
				if ( reses.length > 0 ) {
					tmp = "<div id='removeQueryResHook' class='removable'><hr/><div id='removeQueryRes'><br><table id='tableFileToDep'><thead class='tableFirst'><tr><th>&nbsp;</th><th>＃</th><th>程式來源</th><th>子系統</th><th>交付代碼</th><th>交付人員</th><th>狀態</th><th>提出時間</th></tr></thead><tbody id='tbodyFileToDep'></tbody>";
					$("#queryResHook").append(tmp);
					
					$.each(reses,function(i, res) {
						var id = res.deliverySN;
						disabled="";	
						if (res.statusSN !=3 && res.statusSN !=4) {
							disabled="disabled='disabled'";	
						}
						tmp = "<tr><td><button type='button' "+disabled+" onclick=\"next('"+res.statusSN+"','"+res.subsysId+"','"+id+"','"+res.deplmainSN+"')\">下一步</button></td><td class='engN right'>"+(i+1)+"</td><td>"+res.sysname+"</td><td>"+res.subsysDesc+"("+res.subsysId+")</td><td class='engN right'>"+res.deliveryTarSN+"</td><td class='engN'>"+res.creatorName+"</td><td>"+res.statusdesc+"</td><td class='engN center'>"+res.createdDateTime+"</td></tr>";
						$("#tbodyFileToDep").append(tmp);
					});	
					refreshUI(1,"tbodyFileToDep",false);
				} else {
					$("#removeQueryRes").remove();
					$("#removeQueryResHook").append("<div class='alert'>查無資料</div>");
				}
			},"JSON");
			
		});
		
		/* 取得此系統ID */
		$.post("QuerySystemList",function(reses) {
			$.each(reses.ises,function(i, res) {
				tmp = "<option id='"+res.id+"' value='"+res.id+"'>"+res.name+"</option>";
				$("#selectSysNo").append(tmp);	
			}); 
			$("table#banner h3").html(reses.name);
		},"JSON");
		
		
		$("input:radio[name='radioDepBy']").bind("click",function(){
			tmp = $(this).val();
			$(".dialog").css("visibility","hidden");
			$(".removable").remove();
			$("#forRemoveFileSelect").remove();	//將原本的選的檔案或Header清空
			
			if (tmp=="divDepBySelf") {	//手動式部署
				$("#subSysId").val( $("select#subsysId option:selected").val() );
				$("button#butDiv").prop("disabled",true);
				queryEnv("envSelect");
				aa = $(".divDepBySelf.env").size();
				$("#tdTextArea").attr("colspan",aa);
				tmp = "<div id='forRemoveFileSelect'><hr/><table id='fileReqMapping'><tr><th><button type='button' onclick='selectSVN(\"req\")'>+</button></th><th>＃</th><th>檔名</th><th>版次</th><th>執行方式</th><th>SVN路徑</th><th>延伸路徑</th><th>&nbsp;</th><th>資源群組</th></tr></table></div>";
				$("#fileHook").append(tmp);	
			}
			tmp = $(this).val();
			$("#"+tmp).css("visibility","visible");
		});
		
		$("input:radio[name='radioDepBy']:first").click();
		$("button").button();
	}
}).tooltip();
</script>

</head>
<body>
	<div id="header"></div>
	<p>
	
	<input type="radio" name="radioDepBy" value="divDepByDel" /> 交付式部署
	<input type="radio" name="radioDepBy" value="divDepBySelf" /> 手動式部署
	
	<div id="divDepByDel" class="dialog">	<!-- 交付發起的部署 -->
		<table>
			<tr>
				<th class="right">代碼來源：</th>
				<td><select id='selectSysNo'></select></td>
			</tr>
			<tr>
				<th class="right">交付代碼：</th>
				<td><input type="text" id="delSN"></td>
			</tr>
		</table>
		<button id="clickS" type="button">查詢</button>
	</div>
	
	<div id="queryResHook"></div>
	<div id="divDepBySelf" class="dialog">	<!-- 自行發起的部署 -->
	子系統：<select id='subsysId'></select>
		<table><tr><td id="tdTextArea" colspan="1">
			<h3>手動部署原因說明：</h3>
			<textarea id='selComment' rows="5" cols="35"></textarea></td></tr><tr><td><h3>部署環境</h3></td></tr><tr id='envSelect'></tr><tr id='depBut'></tr><tr><td>&nbsp;</td></tr>
		</table>
		<div id="fileHook"></div>
	</div>
	<p>
	
	<p>
	
	<div class="dialog" id="squadSelect" title="選擇資源群組">
		<div id="divWCLSel"></div>
		<table>
			<thead>
				<tr>
					<th><input type="checkbox" id="subsysSquadCheckALL" onClick="chkALL('subsysSquad')"></th>
					<th>子系統</th>
					<th>資源群組</th>
				</tr>
			</thead>
			<tbody id="squadSelect_tb"></tbody>				
		</table>
	</div>
	
	<input id="sqCheck" name="sqCheck" type="hidden" >
	<div class="dialog" id="fileSelect" title="選擇檔案">
		<input type="hidden" id="drivenBy">
		<label for="fileName_q" >檔案名稱：</label>
		<input type="text" name="fileName_q" id="fileName_q">&nbsp;<button type="button" onclick="genSvnList('qbSVN','2')" id="qbSVN">查詢SVN</button><p>
		<div id="fileSelectResult">
		</div>
	</div>
	<div id="depConfirm" class="dialog">
	<p><p>
		<div id="depConForRemove"></div>
	</div>
	<form id="a_form">
		<input type="hidden" id="fc" name="fc" >
		<input type="hidden" id="loginUser" name="loginUser" >
		<input type="hidden" id="isSU" name="isSU" >
	</form>
	<form id="q_form">
		<input type="hidden" id="deplmainSN" name="deplmainSN" >
		<input type="hidden" id="loginUser" name="loginUser" >
		<input type="hidden" id="deliverSN_q" name="deliverSN_q" >
		<input type="hidden" id="targetSystemId" name="targetSystemId" >
		<input type="hidden" id="subSysId" name="subSysId" >
		<input type="hidden" id="envId" name="envId" >
		<input type="hidden" id="unChkList" name="unChkList" >	<!-- 未勾選的部署細項ID -->
		<input type="hidden" id="statusSN" name="statusSN" >
		<input type="hidden" id="isByDel" name="isByDel" >
		<input type="hidden" id="comment" name="comment">	<!-- 手動部署時需輸入的註解 -->
		<input type="hidden" id="fileList" name="fileList" />	<!-- 提交出去，以JSON為格式的提交清單 -->
		<input type="hidden" id="isReDep" name="isReDep" value="false">
		<input type="hidden" id="isContainedWeb" name="isContainedWeb" value="false">
		<input type="hidden" id="filePortfolio" name="filePortfolio"  >	<!-- 這次部署的檔案組合，1為有web和nonweb，2為僅有nonweb，3為僅有web -->
	</form>
	<div class="dialog" id="confirmDep" title="確認部署"></div>
	<div class="dialog" id="loading" ><label for="imgLoading" class="eyecatch" > Loading...</label><br/><img id='imgLoading' src='pic/ajax-loader.gif'></div>
</body>
</html>